import type { App } from 'vue';

const modules = import.meta.glob('./**/*', { eager: true });

// 安装方法，执行某一类相同操作
function install(app: App<Element>) {
  Object.keys(modules).forEach((key) => {
    const name = key.replaceAll(/(.*\/)*([^.]+).*/g, '$2');
    // eslint-disable-next-line regexp/optimal-quantifier-concatenation
    const type = key.replaceAll(/^\.\/([\w-]+).*/g, '$1');
    const module: any = modules[key];
    if (module.default) {
      switch (type) {
        // 用于注册全局指令
        case 'directives': {
          app.directive(name, module.default);
          break;
        }
        // 使用插件
        case 'plugins': {
          typeof module.default === 'function' && module.default(app);
          break;
        }
      }
    }
  });
}

export default {
  install,
};
